home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / programming / other / fd2pragma / usefd2pragma < prev    next >
Text File  |  2000-02-28  |  9KB  |  335 lines

  1. ; $VER: UseFD2Pragma 1.0 (20.11.1999) (Freeware) by Dirk Stöcker <stoecker@amigaworld.com>
  2. RequestChoice "Select the language you want to make files for"  "1: C (pragmas, protos, stubs, linker libs)*n2: Pascal (stubs, linker libs, units)*n3: Assembler (lvo files)*n4: Basic (BMAP files)*n*n5: FD files" 1 2 3 4 5 >ENV:UseFDA1
  3.  
  4. IF $UseFDA1 EQ 0        ;**** FD file ****
  5.   RequestFile TITLE "Select the pragma input file" >ENV:UseFDInFile
  6.   RequestFile TITLE "Select the output drawer (or file)" >ENV:UseFDOutFile
  7.   FD2Pragma SPECIAL 200 INFILE $UseFDInFile TO $UseFDOutFile
  8.   Skip CleanUp
  9. EndIF
  10.  
  11. IF $UseFDA1 EQ 1        ;**** C ****
  12.   RequestChoice "Select the file type" "1: pragma files*n2: stubs, link library*n3: local libbase stubs*n4: protos*n5: GCC stuff*n6: PPC stuff (GCC, SAS-C, proto)*n7: VBCC stuff (68K, WOS, PPC)" 1 2 3 4 5 6 7 >ENV:UseFDA2
  13.  
  14.   IF $UseFDA2 EQ 1
  15.     Set UseFDMode 1
  16.     RequestChoice "Select the pragma type" "1: Aztec*n2: DICE*n3: SAS*n4: MAXON*n5: STORM*n6: all [default]*n7: all + GCC redirect*n8: GCC redirect" 1 2 3 4 5 6 7 8 >ENV:UseFDA3
  17.     IF $UseFDA3 EQ 1
  18.       Set UseFDSPECIAL 1
  19.     EndIF
  20.     IF $UseFDA3 EQ 2
  21.       Set UseFDSPECIAL 2
  22.     EndIF
  23.     IF $UseFDA3 EQ 3
  24.       Set UseFDSPECIAL 3
  25.     EndIF
  26.     IF $UseFDA3 EQ 4
  27.       Set UseFDSPECIAL 4
  28.     EndIF
  29.     IF $UseFDA3 EQ 5
  30.       Set UseFDSPECIAL 5
  31.     EndIF
  32.     IF $UseFDA3 EQ 6
  33.       Set UseFDSPECIAL 6
  34.     EndIF
  35.     IF $UseFDA3 EQ 7
  36.       Set UseFDSPECIAL 7
  37.     EndIF
  38.     IF $UseFDA3 EQ 0
  39.       Set UseFDSPECIAL 8
  40.       Set UseFDMode 0
  41.     EndIF
  42.   EndIF
  43.   If $UseFDA2 EQ 2
  44.     Set UseFDMode 2
  45.     RequestChoice "Select the stub type" "1: C text*n2: assembler text*n3: link library" 1 2 3 >ENV:UseFDA3
  46.     IF $UseFDA3 EQ 1
  47.       Set UseFDSPECIAL 10
  48.       Set UseFDMode 0
  49.     EndIF
  50.     IF $UseFDA3 EQ 2
  51.       Set UseFDSPECIAL 11
  52.     EndIF
  53.     IF $UseFDA3 EQ 0
  54.       Set UseFDSPECIAL 12
  55.     EndIF
  56.   EndIF
  57.   If $UseFDA2 EQ 3
  58.     Set UseFDMode 2
  59.     RequestChoice "Select the type" "1: register call*n2: stack call" 1 2 >ENV:UseFDA3
  60.     IF $UseFDA3 EQ 1
  61.       Set UseFDSPECIAL 13
  62.     EndIF
  63.     IF $UseFDA3 EQ 0
  64.       Set UseFDSPECIAL 14
  65.     EndIF
  66.   EndIF
  67.   If $UseFDA2 EQ 4
  68.     RequestChoice "Select the proto type" "1: with pragma/..._lib.h call*n2: with pragma/..._pragmas.h call*n3: with pragmas/..._lib.h call*n4: with pragmas/..._pragmas.h call*n5: with local/..._loc.h call*n6: all compilers*n7: GNU-C compiler only*n8: without lib definition" 1 2 3 4 5 6 7 >ENV:UseFDA3
  69.     IF $UseFDA3 EQ 1
  70.       Set UseFDSPECIAL 30
  71.     EndIF
  72.     IF $UseFDA3 EQ 2
  73.       Set UseFDSPECIAL 31
  74.     EndIF
  75.     IF $UseFDA3 EQ 3
  76.       Set UseFDSPECIAL 32
  77.     EndIF
  78.     IF $UseFDA3 EQ 4
  79.       Set UseFDSPECIAL 33
  80.     EndIF
  81.     IF $UseFDA3 EQ 5
  82.       Set UseFDSPECIAL 34
  83.     EndIF
  84.     IF $UseFDA3 EQ 6
  85.       Set UseFDSPECIAL 35
  86.     EndIF
  87.     IF $UseFDA3 EQ 7
  88.       Set UseFDSPECIAL 36
  89.     EndIF
  90.     IF $UseFDA3 EQ 0
  91.       Set UseFDSPECIAL 37
  92.     EndIF
  93.   EndIF
  94.   If $UseFDA2 EQ 5
  95.     Set UseFDMode 2
  96.     RequestChoice "Select inline file type" "1: new*n2: old*n3: lib stubs" 1 2 3 >ENV:UseFDA3
  97.     IF $UseFDA3 EQ 1
  98.       Set UseFDSPECIAL 40
  99.     EndIF
  100.     IF $UseFDA3 EQ 2
  101.       Set UseFDSPECIAL 41
  102.     EndIF
  103.     IF $UseFDA3 EQ 0
  104.       Set UseFDSPECIAL 42
  105.     EndIF
  106.   EndIF
  107.   If $UseFDA2 EQ 6
  108.     Set UseFDMode 2
  109.     RequestChoice "Select PPC file type" "1: new inlines*n2: old inlines*n3: lib stub inlines*n4: SAS-C PPC file*n5: PPC proto file" 1 2 3 4 5 >ENV:UseFDA3
  110.     IF $UseFDA3 EQ 1
  111.       Set UseFDSPECIAL 50
  112.     EndIF
  113.     IF $UseFDA3 EQ 2
  114.       Set UseFDSPECIAL 51
  115.     EndIF
  116.     IF $UseFDA3 EQ 3
  117.       Set UseFDSPECIAL 52
  118.     EndIF
  119.     IF $UseFDA3 EQ 4
  120.       Set UseFDSPECIAL 53
  121.     EndIF
  122.     IF $UseFDA3 EQ 0
  123.       Set UseFDSPECIAL 42
  124.       Set UseFDMode 0
  125.     EndIF
  126.   EndIF
  127.   If $UseFDA2 EQ 0
  128.     Set UseFDMode 2
  129.     RequestChoice "Select file type" "1: 68K inlines*n2: WOS stubs (ASM)*n3: WOS stubs (ASM, libbase)*n4: WOS stubs (link)*n5: WOS stubs (link, libbase)*n6: PPC stubs (ASM)*n7: PPC stubs(link)" 1 2 3 4 5 6 7 >ENV:UseFDA3
  130.     IF $UseFDA3 EQ 1
  131.       Set UseFDSPECIAL 70
  132.       Set UseFDMode 0
  133.     EndIF
  134.     IF $UseFDA3 EQ 2
  135.       Set UseFDSPECIAL 71
  136.     EndIF
  137.     IF $UseFDA3 EQ 3
  138.       Set UseFDSPECIAL 72
  139.     EndIF
  140.     IF $UseFDA3 EQ 4
  141.       Set UseFDSPECIAL 73
  142.     EndIF
  143.     IF $UseFDA3 EQ 5
  144.       Set UseFDSPECIAL 74
  145.     EndIF
  146.     IF $UseFDA3 EQ 6
  147.       Set UseFDSPECIAL 75
  148.     EndIF
  149.     IF $UseFDA3 EQ 0
  150.       Set UseFDSPECIAL 76
  151.     EndIF
  152.   EndIF
  153. EndIF
  154.  
  155. IF $UseFDA1 EQ 2        ;**** Pascal ****
  156.   RequestChoice "Select the file type" "1: stub-functions - assembler text*n2: stub-functions - link library*n3: FPC unit text" 1 2 3 >ENV:UseFDA2
  157.  
  158.   IF $UseFDA2 EQ 1
  159.     Set UseFDSPECIAL 15        ; stub-functions for Pascal - assembler text
  160.   EndIF
  161.  
  162.   IF $UseFDA2 EQ 2
  163.     Set UseFDSPECIAL 16        ; stub-functions for Pascal - link library
  164.   EndIF
  165.  
  166.   IF $UseFDA2 EQ 0
  167.     Set UseFDSPECIAL 60        ; FPC pascal unit text
  168.   EndIF
  169.  
  170.   Set UseFDNeedCLIB 1
  171. EndIF
  172.  
  173. IF $UseFDA1 EQ 3        ;**** Assembler ****
  174.   RequestChoice "Select the file type" "1: lvo _lvo.i file*n2: lvo _lib.i file*n3: lvo _lvo.i file no XDEF*n4: lvo _lib.i file no XDEF*n5: link library" 1 2 3 4 5 >ENV:UseFDA2
  175.  
  176.   IF $UseFDA2 EQ 1
  177.     Set UseFDSPECIAL 20        ; assembler lvo _lvo.i file
  178.   EndIF
  179.  
  180.   IF $UseFDA2 EQ 2
  181.     Set UseFDSPECIAL 21        ; assembler lvo _lib.i file
  182.   EndIF
  183.  
  184.   IF $UseFDA2 EQ 3
  185.     Set UseFDSPECIAL 22        ; assembler lvo _lvo.i file no XDEF
  186.   EndIF
  187.  
  188.   IF $UseFDA2 EQ 4
  189.     Set UseFDSPECIAL 23        ; assembler lvo _lib.i file no XDEF
  190.   EndIF
  191.  
  192.   IF $UseFDA2 EQ 0
  193.     Set UseFDSPECIAL 24        ; assembler lvo link library
  194.   EndIF
  195.   
  196.   Set UseFDNeedCLIB 0
  197. EndIF
  198.  
  199. IF $UseFDA1 EQ 4        ;**** Basic ****
  200.   Set UseFDSPECIAL 17        ; BMAP file for AmigaBASIC and MaxonBASIC
  201.   Set UseFDNeedCLIB 0
  202. EndIF
  203.  
  204. ; **** scan options here ****
  205. Set UseFDCOMMENT ""
  206. Set UseFDEXTERNC ""
  207. Set UseFDFPUONLY ""
  208. Set UseFDNEWSYNTAX ""
  209. Set UseFDNOFPU ""
  210. Set UseFDNOPPC ""
  211. Set UseFDNOSYMBOL ""
  212. Set UseFDOPT040 ""
  213. Set UseFDPPCONLY ""
  214. Set UseFDPRIVATE ""
  215. Set UseFDSECTION ""
  216. Set UseFDSMALLDATA ""
  217. Set UseFDSORTED ""
  218. Set UseFDSTORMFD ""
  219. Set UseFDUSESYSCALL ""
  220.  
  221. Lab ScanOpts
  222. RequestChoice "Select Option" "See Dokumentation for Option description.*n*nThis request reappears, as long as you do not*nselect 'XX'*n 1=COMMENT     2=EXTERNC     3=FPUONLY*n 4=NEWSYNTAX   5=NOFPU       6=NOPPC*n 7=NOSYMBOL   8=OPT040      9=PPCONLY*n10=PRIVATE    11=SECTION    12=SMALLDATA*n13=SORTED     14=STORMFD    15=USESYSCALL" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 XX >ENV:UseFDOption
  223.  
  224. IF $UseFDOption EQ 0
  225.  Skip EndScanOpts
  226. EndIf
  227. IF $UseFDOption EQ 1
  228.  Set UseFDCOMMENT COMMENT
  229. EndIf
  230. IF $UseFDOption EQ 2
  231.  Set UseFDEXTERNC EXTERNC
  232. EndIf
  233. IF $UseFDOption EQ 3
  234.  Set UseFDFPUONLY FPUONLY
  235. EndIf
  236. IF $UseFDOption EQ 4
  237.  Set UseFDNEWSYNTAX NEWSYNTAX
  238. EndIf
  239. IF $UseFDOption EQ 5
  240.  Set UseFDNOFPU NOFPU
  241. EndIf
  242. IF $UseFDOption EQ 6
  243.  Set UseFDNOPPC NOPPC
  244. EndIf
  245. IF $UseFDOption EQ 7
  246.  Set UseFDNOSYMBOL NOSYMBOL
  247. EndIf
  248. IF $UseFDOption EQ 8
  249.  Set UseFDOPT040 OPT040
  250. EndIf
  251. IF $UseFDOption EQ 9
  252.  Set UseFDPPCONLY PPCONLY
  253. EndIf
  254. IF $UseFDOption EQ 10
  255.  Set UseFDPRIVATE PRIVATE
  256. EndIf
  257. IF $UseFDOption EQ 11
  258.  Set UseFDSECTION SECTION
  259. EndIf
  260. IF $UseFDOption EQ 12
  261.  Set UseFDSMALLDATA SMALLDATA
  262. EndIf
  263. IF $UseFDOption EQ 13
  264.  Set UseFDSORTED SORTED
  265. EndIf
  266. IF $UseFDOption EQ 14
  267.  Set UseFDSTORMFD STORMFD
  268. EndIf
  269. IF $UseFDOption EQ 15
  270.  Set UseFDUSESYSCALL USESYSCALL
  271. EndIf
  272.  
  273. Skip ScanOpts BACK
  274.  
  275. Lab EndScanOpts
  276. Set UseFDArgs "" $UseFDCOMMENT $UseFDEXTERNC $UseFDFPUONLY $UseFDNEWSYNTAX $UseFDNOFPU $UseFDNOPPC $UseFDNOSYMBOL $UseFDOPT040 $UseFDPPCONLY $UseFDPRIVATE $UseFDSECTION $UseFDSMALLDATA $UseFDSORTED $UseFDSTORMFD $UseFDUSESYSCALL
  277.  
  278. RequestChoice "Do you want to insert a header?" "Select*nHEADERFILE to enter a file or*nSCANHEADER to scan the destionation file." HEADERFILE SCANHEADER NoHeader >ENV:UseFDHeader
  279. IF $UseFDHeader EQ 1
  280.   RequestFile TITLE "Select the header file" >ENV:UseFDHeaderFile
  281.   Set UseFDArgs $UseFDArgs HEADER $UseFDHeaderFile
  282. EndIF
  283.  
  284. IF $UseFDHeader EQ 2
  285.   Set UseFDArgs $UseFDArgs HEADER=@
  286. EndIF
  287.  
  288. IF $UseFDMode EQ 1
  289.   RequestChoice "Select definition mode" "1: _INCLUDE_PRAGMA_..._LIB_H [default]*n2: _PRAGMAS_..._LIB_H*n3: _PRAGMAS_..._PRAGMAS_H*n4: no definition" 1 2 3 4 >ENV:UseFDMode2
  290.   IF $UseFDMode2 EQ 1
  291.     Set UseFDArgs $UseFDArgs MODE 1
  292.   EndIF
  293.   IF $UseFDMode2 EQ 2
  294.     Set UseFDArgs $UseFDArgs MODE 2
  295.   EndIF
  296.   IF $UseFDMode2 EQ 3
  297.     Set UseFDArgs $UseFDArgs MODE 3
  298.   EndIF
  299.   IF $UseFDMode2 EQ 0
  300.     Set UseFDArgs $UseFDArgs MODE 4
  301.   EndIF
  302. EndIF
  303.  
  304. IF $UseFDMode EQ 2
  305.   RequestChoice "Select work mode" "1: all functions, normal interface*n2: only tag-functions, tagcall interface*n3: all functions, both interfaces [default]" 1 2 3 >ENV:UseFDMode2
  306.   IF $UseFDMode2 EQ 1
  307.     Set UseFDArgs $UseFDArgs MODE 1
  308.   EndIF
  309.   IF $UseFDMode2 EQ 2
  310.     Set UseFDArgs $UseFDArgs MODE 2
  311.   EndIF
  312.   IF $UseFDMode2 EQ 0
  313.     Set UseFDArgs $UseFDArgs MODE 3
  314.   EndIF
  315. EndIF
  316.  
  317. RequestFile TITLE "Select the FD input file" >ENV:UseFDInFile
  318. IF $UseFDNeedCLIB EQ 1
  319.   RequestFile TITLE "Select the clib prototype file" >ENV:UseFDCLIB
  320. EndIF
  321. RequestFile TITLE "Select the output drawer (or file)" >ENV:UseFDOutFile
  322.  
  323. IF $UseFDNeedCLIB EQ 1
  324.  Set UseFDArgs $UseFDArgs CLIB $UseFDCLIB
  325. EndIF
  326.  
  327. Echo "Executing following command:"
  328. Echo "FD2Pragma SPECIAL" $UseFDSPECIAL "INFILE" $UseFDInFile "TO" $UseFDOutFile $UseFDArgs
  329.  
  330. FD2Pragma SPECIAL $UseFDSPECIAL INFILE $UseFDInFile TO $UseFDOutFile $UseFDArgs
  331.  
  332. Lab CleanUp
  333. Delete >NIL: ENV:UseFD#?
  334. Echo "All Done. You can close this window now."
  335.